home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club (Business) 1997 July / Software of the Month Club - Business (Volume 239) (July 1997).iso / pc / code / shared.dxr / 04470_EnterExitTransitions.ls < prev    next >
Encoding:
Text File  |  1996-02-21  |  13.8 KB  |  434 lines

  1. global gWorld, gStates, gOBJECTS, gCursorPresent, gHotRects, gScreenState, gCursorList, gTimerList, gHitMaps, gPuppetlines, gKeyRef, cNullCast, cNullQTmovie, NULLRECT, gSpritePropTypes, gQTproplist, cNUllCharmovie, sPICTSPRITE, sQTSPRITE, sCURSORSPRITE, sCPSprite, sQTCharSprite, gUnvObjects, gAngles, gLastCursor, gPlayingQT, gScreenWidth, gScreenHeight, gCurKeyList, DFLTTEMPO, gTransMovieName, gAnimationObjects, gDeathRow, gLastKeyList, gKeyFrameSound, gEnvironmentSound, gKeyFrameSoundMode, gHaveNavs, gNextEnvLetter, gNextDIRFile, gNextKeyLocFile, gMIDIPlayTRUE, gInitalized, xNAVXOBJ, xCURXOBJ, gCPU, gfileSep, gRootPath, gHDpath, gXobjs, gXOBJPath, gCDpath, gCDName, gQTmovPath, gSoundPath, gNoPreLoadRefNames
  2.  
  3. on SetPathsforEnviro letter
  4.   set gQTmovPath to gCDName & "DATA" & gfileSep & letter & "_enviro" & gfileSep & letter & "_Char" & gfileSep
  5.   set gSoundPath to gCDName & "DATA" & gfileSep & letter & "_enviro" & gfileSep & letter & "_sfx" & gfileSep
  6. end
  7.  
  8. on GIVEPDA
  9.   ReleaseUNVobject(#PDAObj)
  10.   PDARelease(#DOCSeries)
  11.   PDARelease(#ProsProSeries)
  12. end
  13.  
  14. on PrepareEnter
  15.   set gPlayingQT to 0
  16.   delScreenState()
  17.   genEnterKF()
  18. end
  19.  
  20. on PrepareEnterPDA
  21.   set letter to getaProp(gStates, #EnviroLetter)
  22.   SetPathsforEnviro(letter)
  23.   PaletteSwitch("Palette" && letter)
  24.   ADDUnvOBJECTS()
  25.   PrepareEnter()
  26.   go("Mainloop")
  27. end
  28.  
  29. on JumpToMainLoop
  30.   set letter to getaProp(gStates, #EnviroLetter)
  31.   SetPathsforEnviro(letter)
  32.   PaletteSwitch("Palette" && letter)
  33.   ADDUnvOBJECTS()
  34.   PrepareEnter()
  35.   go("Mainloop")
  36. end
  37.  
  38. on TransMoviePaletteSwitch
  39.   PaletteSwitch("Palette" && char 1 of string(getaProp(gLastKeyList, #RefName)))
  40.   go(the frame + 1)
  41.   PaletteSwitch("newest unipal")
  42.   go(the frame + 1)
  43.   PaletteSwitch("Palette" && char 1 of string(getaProp(gCurKeyList, #RefName)))
  44.   go(the frame + 1)
  45. end
  46.  
  47. on transQTLoop
  48.   if the movieRate of sprite sQTSPRITE then
  49.     go(the frame)
  50.   else
  51.     if gNextDIRFile = #empty then
  52.       go("KeyFrame")
  53.       setSoundState(#play)
  54.     end if
  55.   end if
  56. end
  57.  
  58. on transQTPrep
  59.   set the movieRate of sprite sQTSPRITE to 1
  60. end
  61.  
  62. on AddtoBeenThere KeyRef
  63.   if voidp(getaProp(getaProp(gStates, #BeenThere), KeyRef)) then
  64.     setaProp(getaProp(gStates, #BeenThere), KeyRef, 1)
  65.   else
  66.     setaProp(getaProp(gStates, #BeenThere), KeyRef, getaProp(getaProp(gStates, #BeenThere), KeyRef) + 1)
  67.   end if
  68. end
  69.  
  70. on AddClicktoTrail click
  71.   if voidp(getaProp(gStates, #Trail)) then
  72.     setaProp(gStates, #Trail, [:])
  73.   end if
  74. end
  75.  
  76. on MakeMovieFileJump
  77.   unLoadCast()
  78.   go(gNextKeyLocFile, gNextDIRFile)
  79. end
  80.  
  81. on JumpLocLookup NextKeyRef
  82.   set LocTable to [#A20, #B01, #B08A, #B08B, #C01, #D01, #E01, #E06F, #E06G, #E06H, #F01, #G03, #G06, #G22, #H01]
  83.   set Jumpto to getOne(LocTable, NextKeyRef)
  84.   if Jumpto = 0 then
  85.     return "EntryPoint"
  86.   else
  87.     return string(NextKeyRef & "Jump")
  88.   end if
  89. end
  90.  
  91. on JumpToMovie MovNum
  92.   if char 1 of string(getaProp(gCurKeyList, #RefName)) <> string(MovNum) then
  93.     set NextKeyRef to getaProp(getaProp(gStates, #EnviroLOC), MovNum)
  94.     genExitKF(NextKeyRef, #Jump, #PDA)
  95.   end if
  96. end
  97.  
  98. on CheckInterFileJump LastKeyRef, NextKeyRef
  99.   if (NextKeyRef = #trans) or (NextKeyRef = #A00) then
  100.     return #empty
  101.   end if
  102.   set NextJumpLetter to char 1 of string(NextKeyRef)
  103.   if getaProp(gStates, #EnviroLetter) <> NextJumpLetter then
  104.     set gNextKeyLocFile to JumpLocLookup(NextKeyRef)
  105.     return NextJumpLetter
  106.   else
  107.     return #empty
  108.   end if
  109. end
  110.  
  111. on CancelTrans
  112.   if the shiftDown then
  113.     set the movieRate of sprite sQTSPRITE to 0
  114.     if gNextDIRFile <> #empty then
  115.       MakeMovieFileJump()
  116.     else
  117.       go("KeyFrame")
  118.       setSoundState(#play)
  119.     end if
  120.   end if
  121. end
  122.  
  123. on JumpToKey NextKeyRef
  124.   genExitKF(NextKeyRef, #Jump)
  125. end
  126.  
  127. on genExitKF NextKeyRef, DoTrans, SpecialSituation
  128.   set the movieRate of sprite sQTCharSprite to 0
  129.   set the loc of sprite sQTCharSprite to point(-9999, -9999)
  130.   set func to getaProp(getaProp(gCurKeyList, #FUNCTIONS), #exit)
  131.   if func <> #NOEXIT then
  132.     do(string(func))
  133.   end if
  134.   set NextKeyRef to setKFGlobals(NextKeyRef)
  135.   set LastKeyRef to getaProp(gLastKeyList, #RefName)
  136.   set gNextDIRFile to CheckInterFileJump(LastKeyRef, NextKeyRef)
  137.   stopNonAmbientSounds()
  138.   if (DoTrans = #Jump) or the shiftDown then
  139.     if gNextDIRFile = #empty then
  140.       go("KeyFrame")
  141.     else
  142.       set gTimerList to [:]
  143.       if SpecialSituation = #PDA then
  144.         set gNextKeyLocFile to "PDAJump"
  145.         CleanUpPDAJump()
  146.       end if
  147.       MakeMovieFileJump()
  148.     end if
  149.   else
  150.     DoTransition(LastKeyRef, NextKeyRef)
  151.     go("TransQT")
  152.   end if
  153. end
  154.  
  155. on DoTransition LastKeyRef, NextKeyRef
  156.   SetTransMovie(LastKeyRef, NextKeyRef)
  157.   PlayTranstoKF(LastKeyRef, NextKeyRef)
  158. end
  159.  
  160. on setKFGlobals KeyRef
  161.   if stringp(KeyRef) then
  162.     set KeyRef to value(KeyRef)
  163.   end if
  164.   set gLastKeyList to getaProp(gWorld, gKeyRef)
  165.   if symbolp(KeyRef) then
  166.     set gCurKeyList to getaProp(gWorld, KeyRef)
  167.     set gKeyRef to KeyRef
  168.   end if
  169.   return gKeyRef
  170. end
  171.  
  172. on SetTransMovie LastKeyRef, NextKeyRef
  173.   if (length(string(LastKeyRef)) > 3) and (length(string(NextKeyRef)) > 3) then
  174.     set gTransMovieName to string(LastKeyRef & NextKeyRef & ".MOV")
  175.   else
  176.     set gTransMovieName to string(LastKeyRef & "_" & NextKeyRef & ".MOV")
  177.   end if
  178.   set cnum to the number of cast gTransMovieName
  179.   if cnum = -1 then
  180.     set cnum to cNullQTmovie
  181.   else
  182.     if the sound of cast gTransMovieName then
  183.       setSoundState(#pause)
  184.     end if
  185.   end if
  186.   set the castNum of sprite sQTSPRITE to cnum
  187. end
  188.  
  189. on PlayTranstoKF
  190.   set gPlayingQT to 1
  191.   onOffScreenCursor(0)
  192.   set the movieTime of sprite sQTSPRITE to 0
  193.   set the rect of sprite sQTSPRITE to rect(0, 0, 560, 336)
  194. end
  195.  
  196. on genEnterKF
  197.   onOffScreenCursor(1)
  198.   set func to getaProp(getaProp(gCurKeyList, #FUNCTIONS), #enter)
  199.   if func <> #noEnter then
  200.     do(string(func))
  201.   end if
  202.   setAmbientSound()
  203.   setScreenState()
  204.   AddtoBeenThere(gKeyRef)
  205.   updateStage()
  206. end
  207.  
  208. on delScreenState
  209.   Delobjects(getaProp(gLastKeyList, #objects))
  210. end
  211.  
  212. on setScreenState
  213.   set PICTContainer to getaProp(gCurKeyList, #BGName)
  214.   if stringp(PICTContainer) then
  215.   end if
  216.   set the castNum of sprite sPICTSPRITE to PICTContainer
  217.   set the loc of sprite sQTSPRITE to point(-9999, -9999)
  218.   ADDObjects(getaProp(gCurKeyList, #objects))
  219. end
  220.  
  221. on ChangeSpecialState ObjRef, State
  222.   set obj to getaProp(gOBJECTS, ObjRef)
  223.   set OBJS to getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))
  224.   if not voidp(OBJS) then
  225.     Delobjects(OBJS)
  226.   end if
  227.   makeDynamic(ObjRef, #State, State)
  228.   set OBJS to getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))
  229.   if not voidp(OBJS) then
  230.     ADDObjects(OBJS)
  231.   end if
  232. end
  233.  
  234. on ADDObjects objects
  235.   repeat with ObjRef in objects
  236.     set obj to getaProp(gOBJECTS, ObjRef)
  237.     setaProp(gScreenState, getaProp(obj, #spriteNum), ObjRef)
  238.     if not voidp(getaProp(obj, #HotRect)) and (getaProp(obj, #HotRect) <> NULLRECT) then
  239.       set nRects to count(getaProp(obj, #HotRect))
  240.       repeat with X = 1 to nRects
  241.         set hotrectlist to [#rect: getAt(getaProp(obj, #HotRect), X), #RefName: getaProp(obj, #RefName)]
  242.         setaProp(gHotRects, value(getaProp(obj, #spriteNum) & 0 & X), hotrectlist)
  243.       end repeat
  244.     end if
  245.     if not voidp(getaProp(obj, #CursorPresent)) then
  246.       ADDHITMap(ObjRef)
  247.     end if
  248.     DisplayOBJ(ObjRef)
  249.     if not voidp(getaProp(obj, #Children)) then
  250.       ADDObjects(getaProp(obj, #Children))
  251.     end if
  252.     if not voidp(getaProp(obj, #SpecialChild)) then
  253.       if not voidp(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))) then
  254.         ADDObjects(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State)))
  255.       end if
  256.     end if
  257.   end repeat
  258. end
  259.  
  260. on Delobjects objects
  261.   repeat with ObjRef in objects
  262.     set obj to getaProp(gOBJECTS, ObjRef)
  263.     if not voidp(getaProp(obj, #SpecialChild)) then
  264.       if not voidp(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State))) then
  265.         Delobjects(getaProp(getaProp(obj, #SpecialChild), getaProp(obj, #State)))
  266.       end if
  267.     end if
  268.     if not voidp(getaProp(obj, #Children)) then
  269.       Delobjects(getaProp(obj, #Children))
  270.     end if
  271.     UNDisplayOBJ(ObjRef)
  272.     if not voidp(getaProp(obj, #CursorPresent)) then
  273.       DELHITMap(ObjRef)
  274.     end if
  275.     if not voidp(getaProp(obj, #HotRect)) and (getaProp(obj, #HotRect) <> NULLRECT) then
  276.       set nRects to count(getaProp(obj, #HotRect))
  277.       repeat with X = 1 to nRects
  278.         deleteProp(gHotRects, value(getaProp(obj, #spriteNum) & 0 & X))
  279.       end repeat
  280.     end if
  281.     if not voidp(getaProp(obj, #timer)) then
  282.       repeat with theTimer in getaProp(obj, #timer)
  283.         deleteProp(gTimerList, getaProp(theTimer, #TimeRefNum))
  284.       end repeat
  285.       deleteProp(obj, #timer)
  286.     end if
  287.     deleteProp(gScreenState, getaProp(obj, #spriteNum))
  288.   end repeat
  289. end
  290.  
  291. on ADDHITMap ObjRef
  292.   set obj to getaProp(gOBJECTS, ObjRef)
  293.   set Mapref to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #name)
  294.   if not voidp(getaProp(gHitMaps, Mapref)) then
  295.     set lock to getaProp(getaProp(gHitMaps, Mapref), #Lockcount) + 1
  296.     setaProp(getaProp(gHitMaps, Mapref), #Lockcount, lock)
  297.     AddHitIndex(ObjRef, Mapref)
  298.   else
  299.     set xoffset to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #xoffset)
  300.     set yoffset to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #yoffset)
  301.     set scale to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #scale)
  302.     set pathName to string(gCDName & "CODE" & gfileSep & Mapref & ".BMP")
  303.     set xMap to OffScreen(mnew, pathName, xoffset, yoffset, scale)
  304.     setaProp(gHitMaps, Mapref, [#hitxobj: xMap, #Lockcount: 1, #INDEXLIST: [:]])
  305.     AddHitIndex(ObjRef, Mapref)
  306.     set gCursorPresent to #true
  307.   end if
  308. end
  309.  
  310. on DELHITMap ObjRef
  311.   set obj to getaProp(gOBJECTS, ObjRef)
  312.   set Mapref to getaProp(getaProp(getaProp(obj, #CursorPresent), #map), #name)
  313.   if not voidp(getaProp(gHitMaps, Mapref)) then
  314.     delHitIndex(ObjRef, Mapref)
  315.     set lock to getaProp(getaProp(gHitMaps, Mapref), #Lockcount) - 1
  316.     setaProp(getaProp(gHitMaps, Mapref), #Lockcount, lock)
  317.     if getaProp(getaProp(gHitMaps, Mapref), #Lockcount) = 0 then
  318.       set xMap to getaProp(getaProp(gHitMaps, Mapref), #hitxobj)
  319.       xMap(mdispose)
  320.       deleteProp(gHitMaps, Mapref)
  321.       set gCursorPresent to #false
  322.     end if
  323.   end if
  324. end
  325.  
  326. on AddHitIndex ObjRef, Mapref
  327.   set index to getaProp(getaProp(getaProp(gOBJECTS, ObjRef), #CursorPresent), #HitIndex)
  328.   set INDEXLIST to getaProp(getaProp(gHitMaps, Mapref), #INDEXLIST)
  329.   set cindex to count(index)
  330.   repeat with IND = 1 to cindex
  331.     set action to getAt(index, IND)
  332.     set indexNum to getPropAt(index, IND)
  333.     addProp(INDEXLIST, indexNum, [#RefName: ObjRef, #do: action])
  334.   end repeat
  335. end
  336.  
  337. on delHitIndex ObjRef, Mapref
  338.   set index to getaProp(getaProp(getaProp(gOBJECTS, ObjRef), #CursorPresent), #HitIndex)
  339.   set INDEXLIST to getaProp(getaProp(gHitMaps, Mapref), #INDEXLIST)
  340.   set cindex to count(index)
  341.   repeat with IND = 1 to cindex
  342.     set indexNum to getPropAt(index, IND)
  343.     deleteProp(INDEXLIST, indexNum)
  344.   end repeat
  345. end
  346.  
  347. on DisplayOBJ ObjRef
  348.   set obj to getaProp(gOBJECTS, ObjRef)
  349.   if getaProp(obj, #type) = #Animator then
  350.     OnAnimatorObj(ObjRef)
  351.   else
  352.     if getaProp(obj, #type) = #QTMovie then
  353.       startTheTimer(1, string("ONQTMovieOBJ #" & ObjRef), ObjRef)
  354.     else
  355.       if getaProp(obj, #type) = #QDLine then
  356.         add(getaProp(gPuppetlines, #objects), ObjRef)
  357.         if voidp(getaProp(gPuppetlines, #timer)) then
  358.           setaProp(gPuppetlines, #timer, startTheTimer(1, "PuppetLines"))
  359.         end if
  360.       else
  361.         if getaProp(obj, #DisplayState) <> #false then
  362.           OnSpriteObj(ObjRef)
  363.         end if
  364.       end if
  365.     end if
  366.   end if
  367. end
  368.  
  369. on UNDisplayOBJ ObjRef
  370.   set obj to getaProp(gOBJECTS, ObjRef)
  371.   if getaProp(obj, #type) = #Animator then
  372.     OFFAnimatorOBJ(ObjRef)
  373.   else
  374.     if getaProp(obj, #type) = #QTMovie then
  375.       OFFQTMovieOBJ(ObjRef)
  376.     else
  377.       if getaProp(obj, #DisplayState) <> #false then
  378.         OFFSpriteObj(ObjRef)
  379.       end if
  380.     end if
  381.   end if
  382. end
  383.  
  384. on OnSpriteObj ObjRef
  385.   set obj to getaProp(gOBJECTS, ObjRef)
  386.   if not voidp(getaProp(getaProp(obj, #cast), #LoadCast)) and (getPos(gNoPreLoadRefNames, ObjRef) = 0) then
  387.     LoadCastofOBJ(getaProp(getaProp(obj, #cast), #LoadCast))
  388.   end if
  389.   if listp(getaProp(getaProp(obj, #cast), getaProp(obj, #DisplayState))) then
  390.     set the castNum of sprite getaProp(obj, #spriteNum) to getAt(getaProp(getaProp(obj, #cast), getaProp(obj, #DisplayState)), 1)
  391.   else
  392.     set the castNum of sprite getaProp(obj, #spriteNum) to getaProp(getaProp(obj, #cast), getaProp(obj, #DisplayState))
  393.   end if
  394.   if not voidp(getaProp(obj, #SpriteProp)) then
  395.     SetSpriteProps(getaProp(obj, #spriteNum), getaProp(obj, #SpriteProp))
  396.   end if
  397.   if not voidp(getaProp(obj, #loc)) then
  398.     set the loc of sprite getaProp(obj, #spriteNum) to getaProp(obj, #loc)
  399.   end if
  400. end
  401.  
  402. on OFFSpriteObj ObjRef
  403.   set obj to getaProp(gOBJECTS, ObjRef)
  404.   if not voidp(getaProp(getaProp(obj, #cast), #LoadCast)) then
  405.     UNLoadCastofOBJ(getaProp(getaProp(obj, #cast), #LoadCast))
  406.   end if
  407.   if not voidp(getaProp(obj, #SpriteProp)) then
  408.     ResetSpriteProps(getaProp(obj, #spriteNum), getaProp(obj, #SpriteProp))
  409.   end if
  410.   set the castNum of sprite getaProp(obj, #spriteNum) to cNullCast
  411.   set the loc of sprite getaProp(obj, #spriteNum) to point(-20000, -20000)
  412.   set the stretch of sprite getaProp(obj, #spriteNum) to 0
  413.   set the type of sprite getaProp(obj, #spriteNum) to 1
  414. end
  415.  
  416. on SetSpriteProps sNum, propList
  417.   set nProps to count(propList)
  418.   repeat with X = 1 to nProps
  419.     set Prop to getaProp(getaProp(gSpritePropTypes, getPropAt(propList, X)), #script)
  420.     set PropVal to getAt(propList, X)
  421.     do(string("Set" && Prop && sNum && "=" && PropVal))
  422.   end repeat
  423. end
  424.  
  425. on ResetSpriteProps sNum, propList
  426.   set nProps to count(propList)
  427.   repeat with X = 1 to nProps
  428.     set Prop to getaProp(getaProp(gSpritePropTypes, getPropAt(propList, X)), #script)
  429.     set PropVal to getaProp(getaProp(gSpritePropTypes, getPropAt(propList, X)), #DeFault)
  430.     do(string("Set" && Prop && sNum && "=" && PropVal))
  431.   end repeat
  432.   set the stretch of sprite sNum to 0
  433. end
  434.